[GitHub Actions]2023年5月末対応期限の脆弱性について期限を迎える前におさらいしてみた
セキュリティの観点から、GitHub Actionsからsave-stateとset-outputのコマンドが2023年5月31日を持って廃止されます。告知そのものは2022年10月11日に出ていました。ポイントは、期限以降はwarningメッセージにとどまらず、workflowそのものが実行失敗するようになる可能性を含むところです。
十二分に時間の猶予はあるはずですが、もしかして未だ対処していない、或いは知らなかったという人がいるかもしれないと思い、改めて書いてみることにしました。なお、DevIOの過去記事を見る限りではあまり触れられておらず、執筆勢が手を付けている範囲での利用例が無かったのかもしれません。
問題
現在、Actionsのrunnnerを2.298.2以降にした上でsave-state
及びset-output
を利用するとwarningのメッセージが出力されます。
詳細は以下のように表示されます。
The
set-output
command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/The
save-state
command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
このメッセージ内にてアナウンスされている記事は当記事の最初の方にあるリンク先となります。
対応方法
セルフホストランナーにて行っている場合は2.297.0以降へのアップデートが必要です。自動アップデートされる仕組みなので基本は気にせずともよいのですが、--disableupdate
にて自動アップデートをオフにしていた場合は手動で対処しておきましょう。
Actionsの製作者は@actions/coreをv1.10.0以降にアップデートします。これはsaveState
と setOutput
に対するアップデートを取り込むためです。
save-state
あるいは set-output
を使っている場合は、GITHUB_STATE
及び GITHUB_OUTPUT
への出力となるように修正を入れます。なお、実行しているworkflowのみならず、利用しているActions内にも該当部分があるか忘れずに確認し、必要に応じてアップデートか、対処されているActionsに差し替えておきましょう。過去にset-envやadd-pathに対して修正が発生しましたが、それと似たような内容です。
変更前
- name: Save state run: echo "::save-state name={name}::{value}" - name: Set output run: echo "::set-output name={name}::{value}"
変更後
- name: Save state run: echo "{name}={value}" >> $GITHUB_STATE - name: Set output run: echo "{name}={value}" >> $GITHUB_OUTPUT
あとがき
同様のセキュリティ対策として、Node12が2022年4月以降非サポートになるため、依存しているGitHub Actionsにおいても2023年夏以降は全てのActionがNode16にて実行されるようになります。この影響にてaws-actions/configure-aws-credentials@v1がdeprecatedとなります。
告知は知っていたものの気がつくと期限日だったというのはよくありますが、GitHub Actionsの場合はWorkflowそのものが失敗するのでクリティカルです。忘れずに対応しておきましょう。